package neuroPoker4.netze.input;

import java.util.ArrayList;

import neuroPoker.netze.NetAction;
import neuroPoker.netze.NetKarte;
import neuroPoker.netze.PokerInputSit;
import neuroPoker.poker.Spieler;
import neuroPoker.poker.Tisch;
import neuroPoker.poker.Enums.Actions;
import neuroPoker.poker.Enums.Stages;
import neuroPoker4.netze.tool.NetAction2;
import neuroPoker4.netze.tool.Util;

public class PreFlopInputSitBR1 extends PokerInputSit {

	public NetKarte[] netKarten = new NetKarte[2];

	public ArrayList<NetAction> pfActionBR1 = new ArrayList<NetAction>(9);

	public PreFlopInputSitBR1(Tisch tisch, Spieler spieler) {
		this.spieler = spieler;
		// input
		// 2 Karten
		netKarten[0] = spieler.karten[0];
		netKarten[1] = spieler.karten[1];

		// br1 Action
		pfActionBR1 = getActBRAction(tisch, spieler, Stages.preFlop, 1);
	}

	public double[] getInput() {
		// 30 input neuronen
		double[] input = new double[30];
		// kartenbits setzen
		input = Util.setKartenBits(input, netKarten);
		// spieleraction bits setzen
		input = Util.setSpielerActionBits(input, pfActionBR1, 2, 1);

		return input;
	}

	public String toString() {
		String str = this.getClass() + "\n" + spieler.name + " Karten: ";
		str += netKarten[0].toString() + netKarten[1].toString();
		str += " Action: " + pfActionBR1;
		str += "\nInput: ";
		double[] tmpIn = getInput();
		for (int i = 0; i < tmpIn.length; i++)
			str += tmpIn[i] + "|";
		return str;

	}

	@Override
	protected NetAction getNewNetAction(int action) {
		return new NetAction2(action);
	}

	@Override
	protected NetAction getNewNetAction(Actions action) {
		return new NetAction2(NetAction.toActionConst(action));
	}

	@Override
	public boolean isLastActionFold() {
		return pfActionBR1.get(pfActionBR1.size()-1).equals(NetAction.fold);
	}

}
